package digitrencer;

//commented by Gergő
/**
 * Az ÉS kaput megvalósító osztály.
 * @author taplonaplo
 */
public class And_gate extends Gate {

        /**
         * And_gate osztály konstruktora.
         * Meghívja a Gate konstruktorát, majd
         * ellenőrzi, hogy a bemeneti vezetékek száma legalább 2-e.
         * Amennyiben nem, hibát dob, mivel az And-gate osztály tagjainak nem
         * lehet kevesebb bemenete, mint 2.
         * @param inputs    Bemeneti vezetékek
         * @param outputs   Kimeneti vezetékek
         * @throws IllegalArgumentException Amennyiben több, mint két bemeneti
         * vezetéket adtunk meg.
         */
        And_gate(Wire[] inputs, Wire[] outputs) throws IllegalArgumentException{
                super(inputs,outputs);
                if (inputs.length < 2)
                    throw new IllegalArgumentException("Egy ÉS kapunak legalább két bemenete, egy kimenete kell, hogy legyen");
        }

        /**
         * Az And_gate osztály futási metódusa. A kimenetek értékeit beállítja a hozzá
         * csatlakozó vezetékek végén lévő értékek ÉS kapcsolatára.
         */
    @Override
	public void run() {
		for(Wire w : in ){
                    if (w.getEnd() == false){
                        out[0].setStart(false);
                        return;
                    }
                }
                out[0].setStart(true);
	}
}
